!
function(t) {
  function e(r) {
    if (n[r]) return n[r].exports;
    var i = n[r] = {
      i: r,
      l: !1,
      exports: {}
    };
    return t[r].call(i.exports, i, i.exports, e),
    i.l = !0,
    i.exports
  }
  var n = {};
  return e.m = t,
  e.c = n,
  e.i = function(t) {
    return t
  },
  e.d = function(t, n, r) {
    e.o(t, n) || Object.defineProperty(t, n, {
      configurable: !1,
      enumerable: !0,
      get: r
    })
  },
  e.n = function(t) {
    var n = t && t.__esModule ?
    function() {
      return t.
    default
    }:
    function() {
      return t
    };
    return e.d(n, "a", n),
    n
  },
  e.o = function(t, e) {
    return Object.prototype.hasOwnProperty.call(t, e)
  },
  e.p = "https://static.zhihu.com/heifetz/",
  e(e.s = 1153)
} ({
  1153 : function(t, e, n) {
    "use strict";
    function r(t) {
      return t && t.__esModule ? t: {
      default:
        t
      }
    }
    var i = n(357),
    o = r(i); (0, o.
  default)("https://33eaa9216baf44f88bc5c4df2e605724@crash2.zhihu.com/10")
  },
  303 : function(t, e, n) {
    "use strict";
    function r(t) {
      return void 0 === t
    }
    function i(t) {
      return "function" == typeof t
    }
    function o(t) {
      return "[object String]" === _.toString.call(t)
    }
    function s(t) {
      return "object" == typeof t && null !== t
    }
    function a(t) {
      for (var e in t) return ! 1;
      return ! 0
    }
    function l(t) {
      var e = _.toString.call(t);
      return s(t) && "[object Error]" === e || "[object Exception]" === e || t instanceof Error
    }
    function u(t, e) {
      var n, i;
      if (r(t.length)) for (n in t) h(t, n) && e.call(null, n, t[n]);
      else if (i = t.length) for (n = 0; n < i; n++) e.call(null, n, t[n])
    }
    function c(t, e) {
      return e ? (u(e,
      function(e, n) {
        t[e] = n
      }), t) : t
    }
    function f(t, e) {
      return ! e || t.length <= e ? t: t.substr(0, e) + "…"
    }
    function h(t, e) {
      return _.hasOwnProperty.call(t, e)
    }
    function p(t) {
      for (var e, n = [], r = 0, i = t.length; r < i; r++) e = t[r],
      o(e) ? n.push(e.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1")) : e && e.source && n.push(e.source);
      return new RegExp(n.join("|"), "i")
    }
    function g(t) {
      var e = [];
      return u(t,
      function(t, n) {
        e.push(encodeURIComponent(t) + "=" + encodeURIComponent(n))
      }),
      e.join("&")
    }
    function d() {
      var t = window.crypto || window.msCrypto;
      if (!r(t) && t.getRandomValues) {
        var e = new Uint16Array(8);
        t.getRandomValues(e),
        e[3] = 4095 & e[3] | 16384,
        e[4] = 16383 & e[4] | 32768;
        var n = function(t) {
          for (var e = t.toString(16); e.length < 4;) e = "0" + e;
          return e
        };
        return n(e[0]) + n(e[1]) + n(e[2]) + n(e[3]) + n(e[4]) + n(e[5]) + n(e[6]) + n(e[7])
      }
      return "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,
      function(t) {
        var e = 16 * Math.random() | 0,
        n = "x" === t ? e: 3 & e | 8;
        return n.toString(16)
      })
    }
    var _ = Object.prototype;
    t.exports = {
      isUndefined: r,
      isFunction: i,
      isString: o,
      isObject: s,
      isEmptyObject: a,
      isError: l,
      each: u,
      objectMerge: c,
      truncate: f,
      hasKey: h,
      joinRegExp: p,
      urlencode: g,
      uuid4: d
    }
  },
  357 : function(t, e, n) {
    "use strict";
    function r(t) {
      return t && t.__esModule ? t: {
      default:
        t
      }
    }
    function i(t) {
      s.
    default.config(t).install(),
      window.Raven = s.
    default,
      window.onunhandledrejection = function(t) {
        console.error(t),
        s.
      default.captureException(t.reason)
      }
    }
    Object.defineProperty(e, "__esModule", {
      value: !0
    }),
    e.
  default = i;
    var o = n(813),
    s = r(o)
  },
  811 : function(t, e, n) {
    "use strict";
    function r(t) {
      this.name = "RavenConfigError",
      this.message = t
    }
    r.prototype = new Error,
    r.prototype.constructor = r,
    t.exports = r
  },
  812 : function(t, e, n) {
    "use strict";
    function r() {
      return + new Date
    }
    function i() {
      this._hasJSON = !("object" != typeof JSON || !JSON.stringify),
      this._hasDocument = "undefined" != typeof document,
      this._lastCapturedException = null,
      this._lastEventId = null,
      this._globalServer = null,
      this._globalKey = null,
      this._globalProject = null,
      this._globalContext = {},
      this._globalOptions = {
        logger: "javascript",
        ignoreErrors: [],
        ignoreUrls: [],
        whitelistUrls: [],
        includePaths: [],
        crossOrigin: "anonymous",
        collectWindowErrors: !0,
        maxMessageLength: 0,
        stackTraceLimit: 50
      },
      this._ignoreOnError = 0,
      this._isRavenInstalled = !1,
      this._originalErrorStackTraceLimit = Error.stackTraceLimit,
      this._originalConsole = window.console || {},
      this._originalConsoleMethods = {},
      this._plugins = [],
      this._startTime = r(),
      this._wrappedBuiltIns = [];
      for (var t in this._originalConsole) this._originalConsoleMethods[t] = this._originalConsole[t]
    }
    var o = n(814),
    s = n(811),
    a = n(303),
    l = a.isFunction,
    u = a.isUndefined,
    c = a.isError,
    f = a.isEmptyObject,
    h = a.hasKey,
    p = a.joinRegExp,
    g = a.each,
    d = a.objectMerge,
    _ = a.truncate,
    v = a.urlencode,
    m = a.uuid4,
    x = "source protocol user pass host port path".split(" "),
    b = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;
    i.prototype = {
      VERSION: "2.3.0",
      debug: !1,
      TraceKit: o,
      config: function(t, e) {
        var n = this;
        if (this._globalServer) return this._logDebug("error", "Error: Raven has already been configured"),
        this;
        if (!t) return this;
        e && g(e,
        function(t, e) {
          "tags" === t || "extra" === t ? n._globalContext[t] = e: n._globalOptions[t] = e
        });
        var r = this._parseDSN(t),
        i = r.path.lastIndexOf("/"),
        s = r.path.substr(1, i);
        return this._dsn = t,
        this._globalOptions.ignoreErrors.push(/^Script error\.?$/),
        this._globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),
        this._globalOptions.ignoreErrors = p(this._globalOptions.ignoreErrors),
        this._globalOptions.ignoreUrls = !!this._globalOptions.ignoreUrls.length && p(this._globalOptions.ignoreUrls),
        this._globalOptions.whitelistUrls = !!this._globalOptions.whitelistUrls.length && p(this._globalOptions.whitelistUrls),
        this._globalOptions.includePaths = p(this._globalOptions.includePaths),
        this._globalKey = r.user,
        this._globalSecret = r.pass && r.pass.substr(1),
        this._globalProject = r.path.substr(i + 1),
        this._globalServer = this._getGlobalServer(r),
        this._globalEndpoint = this._globalServer + "/" + s + "api/" + this._globalProject + "/store/",
        this._globalOptions.fetchContext && (o.remoteFetching = !0),
        this._globalOptions.linesOfContext && (o.linesOfContext = this._globalOptions.linesOfContext),
        o.collectWindowErrors = !!this._globalOptions.collectWindowErrors,
        this
      },
      install: function() {
        var t = this;
        return this.isSetup() && !this._isRavenInstalled && (o.report.subscribe(function() {
          t._handleOnErrorStackInfo.apply(t, arguments)
        }), this._wrapBuiltIns(), this._drainPlugins(), this._isRavenInstalled = !0),
        Error.stackTraceLimit = this._globalOptions.stackTraceLimit,
        this
      },
      context: function(t, e, n) {
        return l(t) && (n = e || [], e = t, t = void 0),
        this.wrap(t, e).apply(this, n)
      },
      wrap: function(t, e) {
        function n() {
          for (var n = [], i = arguments.length, o = !t || t && t.deep !== !1; i--;) n[i] = o ? r.wrap(t, arguments[i]) : arguments[i];
          try {
            return e.apply(this, n)
          } catch(e) {
            throw r._ignoreNextOnError(),
            r.captureException(e, t),
            e
          }
        }
        var r = this;
        if (u(e) && !l(t)) return t;
        if (l(t) && (e = t, t = void 0), !l(e)) return e;
        try {
          if (e.__raven__) return e
        } catch(t) {
          return e
        }
        if (e.__raven_wrapper__) return e.__raven_wrapper__;
        for (var i in e) h(e, i) && (n[i] = e[i]);
        return e.__raven_wrapper__ = n,
        n.prototype = e.prototype,
        n.__raven__ = !0,
        n.__inner__ = e,
        n
      },
      uninstall: function() {
        return o.report.uninstall(),
        this._restoreBuiltIns(),
        Error.stackTraceLimit = this._originalErrorStackTraceLimit,
        this._isRavenInstalled = !1,
        this
      },
      captureException: function(t, e) {
        if (!c(t)) return this.captureMessage(t, e);
        this._lastCapturedException = t;
        try {
          var n = o.computeStackTrace(t);
          this._handleStackInfo(n, e)
        } catch(e) {
          if (t !== e) throw e
        }
        return this
      },
      captureMessage: function(t, e) {
        if (!this._globalOptions.ignoreErrors.test || !this._globalOptions.ignoreErrors.test(t)) return this._send(d({
          message: t + ""
        },
        e)),
        this
      },
      addPlugin: function(t) {
        var e = Array.prototype.slice.call(arguments, 1);
        return this._plugins.push([t, e]),
        this._isRavenInstalled && this._drainPlugins(),
        this
      },
      setUserContext: function(t) {
        return this._globalContext.user = t,
        this
      },
      setExtraContext: function(t) {
        return this._mergeContext("extra", t),
        this
      },
      setTagsContext: function(t) {
        return this._mergeContext("tags", t),
        this
      },
      clearContext: function() {
        return this._globalContext = {},
        this
      },
      getContext: function() {
        return JSON.parse(JSON.stringify(this._globalContext))
      },
      setRelease: function(t) {
        return this._globalOptions.release = t,
        this
      },
      setDataCallback: function(t) {
        return this._globalOptions.dataCallback = t,
        this
      },
      setShouldSendCallback: function(t) {
        return this._globalOptions.shouldSendCallback = t,
        this
      },
      setTransport: function(t) {
        return this._globalOptions.transport = t,
        this
      },
      lastException: function() {
        return this._lastCapturedException
      },
      lastEventId: function() {
        return this._lastEventId
      },
      isSetup: function() {
        return !! this._hasJSON && ( !! this._globalServer || (this.ravenNotConfiguredError || (this.ravenNotConfiguredError = !0, this._logDebug("error", "Error: Raven has not been configured.")), !1))
      },
      afterLoad: function() {
        var t = window.RavenConfig;
        t && this.config(t.dsn, t.config).install()
      },
      showReportDialog: function(t) {
        if (window.document) {
          t = t || {};
          var e = t.eventId || this.lastEventId();
          if (!e) throw new s("Missing eventId");
          var n = t.dsn || this._dsn;
          if (!n) throw new s("Missing DSN");
          var r = encodeURIComponent,
          i = "";
          i += "?eventId=" + r(e),
          i += "&dsn=" + r(n);
          var o = t.user || this._globalContext.user;
          o && (o.name && (i += "&name=" + r(o.name)), o.email && (i += "&email=" + r(o.email)));
          var a = this._getGlobalServer(this._parseDSN(n)),
          l = document.createElement("script");
          l.async = !0,
          l.src = a + "/api/embed/error-page/" + i,
          (document.head || document.body).appendChild(l)
        }
      },
      _ignoreNextOnError: function() {
        var t = this;
        this._ignoreOnError += 1,
        setTimeout(function() {
          t._ignoreOnError -= 1
        })
      },
      _triggerEvent: function(t, e) {
        var n, r;
        if (this._hasDocument) {
          e = e || {},
          t = "raven" + t.substr(0, 1).toUpperCase() + t.substr(1),
          document.createEvent ? (n = document.createEvent("HTMLEvents"), n.initEvent(t, !0, !0)) : (n = document.createEventObject(), n.eventType = t);
          for (r in e) h(e, r) && (n[r] = e[r]);
          if (document.createEvent) document.dispatchEvent(n);
          else try {
            document.fireEvent("on" + n.eventType.toLowerCase(), n)
          } catch(t) {}
        }
      },
      _wrapBuiltIns: function() {
        function t(t, e, r, i) {
          var o = t[e];
          t[e] = r(o),
          i || n._wrappedBuiltIns.push([t, e, o])
        }
        function e(t) {
          return function(e, r) {
            var i = [].slice.call(arguments),
            o = i[0];
            return l(o) && (i[0] = n.wrap(o)),
            t.apply ? t.apply(this, i) : t(i[0], i[1])
          }
        }
        var n = this;
        t(window, "setTimeout", e),
        t(window, "setInterval", e),
        window.requestAnimationFrame && t(window, "requestAnimationFrame",
        function(t) {
          return function(e) {
            return t(n.wrap(e))
          }
        }),
        "EventTarget Window Node ApplicationCache AudioTrackList ChannelMergerNode CryptoOperation EventSource FileReader HTMLUnknownElement IDBDatabase IDBRequest IDBTransaction KeyOperation MediaController MessagePort ModalWindow Notification SVGElementInstance Screen TextTrack TextTrackCue TextTrackList WebSocket WebSocketWorker Worker XMLHttpRequest XMLHttpRequestEventTarget XMLHttpRequestUpload".replace(/\w+/g,
        function(e) {
          var r = window[e] && window[e].prototype;
          r && r.hasOwnProperty && r.hasOwnProperty("addEventListener") && (t(r, "addEventListener",
          function(t) {
            return function(e, r, i, o) {
              try {
                r && r.handleEvent && (r.handleEvent = n.wrap(r.handleEvent))
              } catch(t) {}
              return t.call(this, e, n.wrap(r), i, o)
            }
          }), t(r, "removeEventListener",
          function(t) {
            return function(e, n, r, i) {
              return n = n && (n.__raven_wrapper__ ? n.__raven_wrapper__: n),
              t.call(this, e, n, r, i)
            }
          }))
        }),
        "XMLHttpRequest" in window && t(XMLHttpRequest.prototype, "send",
        function(e) {
          return function(r) {
            var i = this;
            return "onreadystatechange onload onerror onprogress".replace(/\w+/g,
            function(e) {
              e in i && "[object Function]" === Object.prototype.toString.call(i[e]) && t(i, e,
              function(t) {
                return n.wrap(t)
              },
              !0)
            }),
            e.apply(this, arguments)
          }
        });
        var r = window.jQuery || window.$;
        r && r.fn && r.fn.ready && t(r.fn, "ready",
        function(t) {
          return function(e) {
            return t.call(this, n.wrap(e))
          }
        })
      },
      _restoreBuiltIns: function() {
        for (var t; this._wrappedBuiltIns.length;) {
          t = this._wrappedBuiltIns.shift();
          var e = t[0],
          n = t[1],
          r = t[2];
          e[n] = r
        }
      },
      _drainPlugins: function() {
        var t = this;
        g(this._plugins,
        function(e, n) {
          var r = n[0],
          i = n[1];
          r.apply(t, [t].concat(i))
        })
      },
      _parseDSN: function(t) {
        var e = b.exec(t),
        n = {},
        r = 7;
        try {
          for (; r--;) n[x[r]] = e[r] || ""
        } catch(e) {
          throw new s("Invalid DSN: " + t)
        }
        if (n.pass && !this._globalOptions.allowSecretKey) throw new s("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");
        return n
      },
      _getGlobalServer: function(t) {
        var e = "//" + t.host + (t.port ? ":" + t.port: "");
        return t.protocol && (e = t.protocol + ":" + e),
        e
      },
      _handleOnErrorStackInfo: function() {
        this._ignoreOnError || this._handleStackInfo.apply(this, arguments)
      },
      _handleStackInfo: function(t, e) {
        var n = this,
        r = [];
        t.stack && t.stack.length && g(t.stack,
        function(t, e) {
          var i = n._normalizeFrame(e);
          i && r.push(i)
        }),
        this._triggerEvent("handle", {
          stackInfo: t,
          options: e
        }),
        this._processException(t.name, t.message, t.url, t.lineno, r.slice(0, this._globalOptions.stackTraceLimit), e)
      },
      _normalizeFrame: function(t) {
        if (t.url) {
          var e, n = {
            filename: t.url,
            lineno: t.line,
            colno: t.column,
            function: t.func || "?"
          },
          r = this._extractContextFromFrame(t);
          if (r) {
            var i = ["pre_context", "context_line", "post_context"];
            for (e = 3; e--;) n[i[e]] = r[e]
          }
          return n.in_app = !(this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(n.filename) || /(Raven|TraceKit)\./.test(n.
          function) || /raven\.(min\.)?js$/.test(n.filename)),
          n
        }
      },
      _extractContextFromFrame: function(t) {
        if (t.context && this._globalOptions.fetchContext) {
          for (var e = t.context,
          n = ~~ (e.length / 2), r = e.length, i = !1; r--;) if (e[r].length > 300) {
            i = !0;
            break
          }
          if (i) {
            if (u(t.column)) return;
            return [[], e[n].substr(t.column, 50), []]
          }
          return [e.slice(0, n), e[n], e.slice(n + 1)]
        }
      },
      _processException: function(t, e, n, r, i, o) {
        var s, a;
        if ((!this._globalOptions.ignoreErrors.test || !this._globalOptions.ignoreErrors.test(e)) && (e += "", e = _(e, this._globalOptions.maxMessageLength), a = (t ? t + ": ": "") + e, a = _(a, this._globalOptions.maxMessageLength), i && i.length ? (n = i[0].filename || n, i.reverse(), s = {
          frames: i
        }) : n && (s = {
          frames: [{
            filename: n,
            lineno: r,
            in_app: !0
          }]
        }), (!this._globalOptions.ignoreUrls.test || !this._globalOptions.ignoreUrls.test(n)) && (!this._globalOptions.whitelistUrls.test || this._globalOptions.whitelistUrls.test(n)))) {
          var l = d({
            exception: {
              values: [{
                type: t,
                value: e,
                stacktrace: s
              }]
            },
            culprit: n,
            message: a
          },
          o);
          this._send(l)
        }
      },
      _trimPacket: function(t) {
        var e = this._globalOptions.maxMessageLength;
        if (t.message = _(t.message, e), t.exception) {
          var n = t.exception.values[0];
          n.value = _(n.value, e)
        }
        return t
      },
      _getHttpData: function() {
        if (this._hasDocument && document.location && document.location.href) {
          var t = {
            headers: {
              "User-Agent": navigator.userAgent
            }
          };
          return t.url = document.location.href,
          document.referrer && (t.headers.Referer = document.referrer),
          t
        }
      },
      _send: function(t) {
        var e = this,
        n = this._globalOptions,
        i = {
          project: this._globalProject,
          logger: n.logger,
          platform: "javascript"
        },
        o = this._getHttpData();
        if (o && (i.request = o), t = d(i, t), t.tags = d(d({},
        this._globalContext.tags), t.tags), t.extra = d(d({},
        this._globalContext.extra), t.extra), t.extra["session:duration"] = r() - this._startTime, f(t.tags) && delete t.tags, this._globalContext.user && (t.user = this._globalContext.user), n.release && (t.release = n.release), n.serverName && (t.server_name = n.serverName), l(n.dataCallback) && (t = n.dataCallback(t) || t), t && !f(t) && (!l(n.shouldSendCallback) || n.shouldSendCallback(t)) && (this._lastEventId = t.event_id || (t.event_id = m()), t = this._trimPacket(t), this._logDebug("debug", "Raven about to send:", t), this.isSetup())) {
          var s = {
            sentry_version: "7",
            sentry_client: "raven-js/" + this.VERSION,
            sentry_key: this._globalKey
          };
          this._globalSecret && (s.sentry_secret = this._globalSecret);
          var a = this._globalEndpoint; (n.transport || this._makeRequest).call(this, {
            url: a,
            auth: s,
            data: t,
            options: n,
            onSuccess: function() {
              e._triggerEvent("success", {
                data: t,
                src: a
              })
            },
            onError: function() {
              e._triggerEvent("failure", {
                data: t,
                src: a
              })
            }
          })
        }
      },
      _makeImageRequest: function(t) {
        t.auth.sentry_data = JSON.stringify(t.data);
        var e = this._newImage(),
        n = t.url + "?" + v(t.auth),
        r = t.options.crossOrigin; (r || "" === r) && (e.crossOrigin = r),
        e.onload = t.onSuccess,
        e.onerror = e.onabort = t.onError,
        e.src = n
      },
      _makeXhrRequest: function(t) {
        function e() {
          200 === n.status ? t.onSuccess && t.onSuccess() : t.onError && t.onError()
        }
        var n, r = t.url;
        n = new XMLHttpRequest,
        "withCredentials" in n ? n.onreadystatechange = function() {
          4 === n.readyState && e()
        }: (n = new XDomainRequest, r = r.replace(/^https?:/, ""), n.onload = e),
        n.open("POST", r + "?" + v(t.auth)),
        n.send(JSON.stringify(t.data))
      },
      _makeRequest: function(t) {
        var e = "withCredentials" in new XMLHttpRequest || "undefined" != typeof XDomainRequest;
        return (e ? this._makeXhrRequest: this._makeImageRequest)(t)
      },
      _newImage: function() {
        return document.createElement("img")
      },
      _logDebug: function(t) {
        this._originalConsoleMethods[t] && this.debug && Function.prototype.apply.call(this._originalConsoleMethods[t], this._originalConsole, [].slice.call(arguments, 1))
      },
      _mergeContext: function(t, e) {
        u(e) ? delete this._globalContext[t] : this._globalContext[t] = d(this._globalContext[t] || {},
        e)
      }
    },
    i.prototype.setUser = i.prototype.setUserContext,
    i.prototype.setReleaseContext = i.prototype.setRelease,
    t.exports = i
  },
  813 : function(t, e, n) {
    "use strict";
    var r = n(812),
    i = window.Raven,
    o = new r;
    o.noConflict = function() {
      return window.Raven = i,
      o
    },
    o.afterLoad(),
    t.exports = o
  },
  814 : function(t, e, n) {
    "use strict";
    function r() {
      return "undefined" == typeof document ? "": document.location.href
    }
    var i = n(303),
    o = i.hasKey,
    s = i.isString,
    a = i.isUndefined,
    l = {
      remoteFetching: !1,
      collectWindowErrors: !0,
      linesOfContext: 7,
      debug: !1
    },
    u = [].slice,
    c = "?",
    f = /^(?:Uncaught )?((?:Eval|Internal|Range|Reference|Syntax|Type|URI)Error)\: ?(.*)$/;
    l.report = function() {
      function t(t) {
        c(),
        v.push(t)
      }
      function e(t) {
        for (var e = v.length - 1; e >= 0; --e) v[e] === t && v.splice(e, 1)
      }
      function n() {
        h(),
        v = []
      }
      function i(t, e) {
        var n = null;
        if (!e || l.collectWindowErrors) {
          for (var r in v) if (o(v, r)) try {
            v[r].apply(null, [t].concat(u.call(arguments, 2)))
          } catch(t) {
            n = t
          }
          if (n) throw n
        }
      }
      function a(t, e, n, o, a) {
        var u = null;
        if (b) l.computeStackTrace.augmentStackTraceWithInitialElement(b, e, n, t),
        p();
        else if (a) u = l.computeStackTrace(a),
        i(u, !0);
        else {
          var c = {
            url: e,
            line: n,
            column: o
          };
          c.func = l.computeStackTrace.guessFunctionName(c.url, c.line),
          c.context = l.computeStackTrace.gatherContext(c.url, c.line);
          var h, g = void 0,
          _ = t;
          if (s(t)) {
            var h = t.match(f);
            h && (g = h[1], _ = h[2])
          }
          u = {
            name: g,
            message: _,
            url: r(),
            stack: [c]
          },
          i(u, !0)
        }
        return !! d && d.apply(this, arguments)
      }
      function c() {
        _ || (d = window.onerror, window.onerror = a, _ = !0)
      }
      function h() {
        _ && (window.onerror = d, _ = !1, d = void 0)
      }
      function p() {
        var t = b,
        e = m;
        m = null,
        b = null,
        x = null,
        i.apply(null, [t, !1].concat(e))
      }
      function g(t, e) {
        var n = u.call(arguments, 1);
        if (b) {
          if (x === t) return;
          p()
        }
        var r = l.computeStackTrace(t);
        if (b = r, x = t, m = n, window.setTimeout(function() {
          x === t && p()
        },
        r.incomplete ? 2e3: 0), e !== !1) throw t
      }
      var d, _, v = [],
      m = null,
      x = null,
      b = null;
      return g.subscribe = t,
      g.unsubscribe = e,
      g.uninstall = n,
      g
    } (),
    l.computeStackTrace = function() {
      function t(t) {
        if (!l.remoteFetching) return "";
        try {
          var e = function() {
            try {
              return new window.XMLHttpRequest
            } catch(t) {
              return new window.ActiveXObject("Microsoft.XMLHTTP")
            }
          },
          n = e();
          return n.open("GET", t, !1),
          n.send(""),
          n.responseText
        } catch(t) {
          return ""
        }
      }
      function e(e) {
        if (!s(e)) return [];
        if (!o(w, e)) {
          var n = "",
          r = "";
          try {
            r = document.domain
          } catch(t) {}
          e.indexOf(r) !== -1 && (n = t(e)),
          w[e] = n ? n.split("\n") : []
        }
        return w[e]
      }
      function n(t, n) {
        var r, i = /function ([^(]*)\(([^)]*)\)/,
        o = /['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,
        s = "",
        l = 10,
        u = e(t);
        if (!u.length) return c;
        for (var f = 0; f < l; ++f) if (s = u[n - f] + s, !a(s)) {
          if (r = o.exec(s)) return r[1];
          if (r = i.exec(s)) return r[1]
        }
        return c
      }
      function i(t, n) {
        var r = e(t);
        if (!r.length) return null;
        var i = [],
        o = Math.floor(l.linesOfContext / 2),
        s = o + l.linesOfContext % 2,
        u = Math.max(0, n - o - 1),
        c = Math.min(r.length, n + s - 1);
        n -= 1;
        for (var f = u; f < c; ++f) a(r[f]) || i.push(r[f]);
        return i.length > 0 ? i: null
      }
      function u(t) {
        return t.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g, "\\$&")
      }
      function f(t) {
        return u(t).replace("<", "(?:<|&lt;)").replace(">", "(?:>|&gt;)").replace("&", "(?:&|&amp;)").replace('"', '(?:"|&quot;)').replace(/\s+/g, "\\s+")
      }
      function h(t, n) {
        for (var r, i, o = 0,
        s = n.length; o < s; ++o) if ((r = e(n[o])).length && (r = r.join("\n"), i = t.exec(r))) return {
          url: n[o],
          line: r.substring(0, i.index).split("\n").length,
          column: i.index - r.lastIndexOf("\n", i.index) - 1
        };
        return null
      }
      function p(t, n, r) {
        var i, o = e(n),
        s = new RegExp("\\b" + u(t) + "\\b");
        return r -= 1,
        o && o.length > r && (i = s.exec(o[r])) ? i.index: null
      }
      function g(t) {
        if ("undefined" != typeof document) {
          for (var e, n, r, i, o = [window.location.href], s = document.getElementsByTagName("script"), a = "" + t, l = /^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/, c = /^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/, p = 0; p < s.length; ++p) {
            var g = s[p];
            g.src && o.push(g.src)
          }
          if (r = l.exec(a)) {
            var d = r[1] ? "\\s+" + r[1] : "",
            _ = r[2].split(",").join("\\s*,\\s*");
            e = u(r[3]).replace(/;$/, ";?"),
            n = new RegExp("function" + d + "\\s*\\(\\s*" + _ + "\\s*\\)\\s*{\\s*" + e + "\\s*}")
          } else n = new RegExp(u(a).replace(/\s+/g, "\\s+"));
          if (i = h(n, o)) return i;
          if (r = c.exec(a)) {
            var v = r[1];
            if (e = f(r[2]), n = new RegExp("on" + v + "=[\\'\"]\\s*" + e + "\\s*[\\'\"]", "i"), i = h(n, o[0])) return i;
            if (n = new RegExp(e), i = h(n, o)) return i
          }
          return null
        }
      }
      function d(t) {
        if (!a(t.stack) && t.stack) {
          for (var e, o, s = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|<anonymous>).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,
          l = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i,
          u = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:ms-appx|https?|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,
          f = t.stack.split("\n"), h = [], g = /^(.*) is undefined$/.exec(t.message), d = 0, _ = f.length; d < _; ++d) {
            if (e = s.exec(f[d])) {
              var v = e[2] && e[2].indexOf("native") !== -1;
              o = {
                url: v ? null: e[2],
                func: e[1] || c,
                args: v ? [e[2]] : [],
                line: e[3] ? +e[3] : null,
                column: e[4] ? +e[4] : null
              }
            } else if (e = u.exec(f[d])) o = {
              url: e[2],
              func: e[1] || c,
              args: [],
              line: +e[3],
              column: e[4] ? +e[4] : null
            };
            else {
              if (! (e = l.exec(f[d]))) continue;
              o = {
                url: e[3],
                func: e[1] || c,
                args: e[2] ? e[2].split(",") : [],
                line: e[4] ? +e[4] : null,
                column: e[5] ? +e[5] : null
              }
            } ! o.func && o.line && (o.func = n(o.url, o.line)),
            o.line && (o.context = i(o.url, o.line)),
            h.push(o)
          }
          return h.length ? (h[0].line && !h[0].column && g ? h[0].column = p(g[1], h[0].url, h[0].line) : h[0].column || a(t.columnNumber) || (h[0].column = t.columnNumber + 1), {
            name: t.name,
            message: t.message,
            url: r(),
            stack: h
          }) : null
        }
      }
      function _(t) {
        var e = t.stacktrace;
        if (!a(t.stacktrace) && t.stacktrace) {
          for (var o, s = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,
          l = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,
          u = e.split("\n"), c = [], f = 0; f < u.length; f += 2) {
            var h = null;
            if ((o = s.exec(u[f])) ? h = {
              url: o[2],
              line: +o[1],
              column: null,
              func: o[3],
              args: []
            }: (o = l.exec(u[f])) && (h = {
              url: o[6],
              line: +o[1],
              column: +o[2],
              func: o[3] || o[4],
              args: o[5] ? o[5].split(",") : []
            }), h) {
              if (!h.func && h.line && (h.func = n(h.url, h.line)), h.line) try {
                h.context = i(h.url, h.line)
              } catch(t) {}
              h.context || (h.context = [u[f + 1]]),
              c.push(h)
            }
          }
          return c.length ? {
            name: t.name,
            message: t.message,
            url: r(),
            stack: c
          }: null
        }
      }
      function v(t) {
        var s = t.message.split("\n");
        if (s.length < 4) return null;
        var a, l = /^\s*Line (\d+) of linked script ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i,
        u = /^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i,
        c = /^\s*Line (\d+) of function script\s*$/i,
        p = [],
        g = document.getElementsByTagName("script"),
        d = [];
        for (var _ in g) o(g, _) && !g[_].src && d.push(g[_]);
        for (var v = 2; v < s.length; v += 2) {
          var m = null;
          if (a = l.exec(s[v])) m = {
            url: a[2],
            func: a[3],
            args: [],
            line: +a[1],
            column: null
          };
          else if (a = u.exec(s[v])) {
            m = {
              url: a[3],
              func: a[4],
              args: [],
              line: +a[1],
              column: null
            };
            var x = +a[1],
            b = d[a[2] - 1];
            if (b) {
              var w = e(m.url);
              if (w) {
                w = w.join("\n");
                var y = w.indexOf(b.innerText);
                y >= 0 && (m.line = x + w.substring(0, y).split("\n").length)
              }
            }
          } else if (a = c.exec(s[v])) {
            var E = window.location.href.replace(/#.*$/, ""),
            O = new RegExp(f(s[v + 1])),
            S = h(O, [E]);
            m = {
              url: E,
              func: "",
              args: [],
              line: S ? S.line: a[1],
              column: null
            }
          }
          if (m) {
            m.func || (m.func = n(m.url, m.line));
            var k = i(m.url, m.line),
            C = k ? k[Math.floor(k.length / 2)] : null;
            k && C.replace(/^\s*/, "") === s[v + 1].replace(/^\s*/, "") ? m.context = k: m.context = [s[v + 1]],
            p.push(m)
          }
        }
        return p.length ? {
          name: t.name,
          message: s[0],
          url: r(),
          stack: p
        }: null
      }
      function m(t, e, r, o) {
        var s = {
          url: e,
          line: r
        };
        if (s.url && s.line) {
          t.incomplete = !1,
          s.func || (s.func = n(s.url, s.line)),
          s.context || (s.context = i(s.url, s.line));
          var a = / '([^']+)' /.exec(o);
          if (a && (s.column = p(a[1], s.url, s.line)), t.stack.length > 0 && t.stack[0].url === s.url) {
            if (t.stack[0].line === s.line) return ! 1;
            if (!t.stack[0].line && t.stack[0].func === s.func) return t.stack[0].line = s.line,
            t.stack[0].context = s.context,
            !1
          }
          return t.stack.unshift(s),
          t.partial = !0,
          !0
        }
        return t.incomplete = !0,
        !1
      }
      function x(t, e) {
        for (var i, o, s, a = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,
        u = [], f = {},
        h = !1, d = x.caller; d && !h; d = d.caller) if (d !== b && d !== l.report) {
          if (o = {
            url: null,
            func: c,
            line: null,
            column: null
          },
          d.name ? o.func = d.name: (i = a.exec(d.toString())) && (o.func = i[1]), "undefined" == typeof o.func) try {
            o.func = i.input.substring(0, i.input.indexOf("{"))
          } catch(t) {}
          if (s = g(d)) {
            o.url = s.url,
            o.line = s.line,
            o.func === c && (o.func = n(o.url, o.line));
            var _ = / '([^']+)' /.exec(t.message || t.description);
            _ && (o.column = p(_[1], s.url, s.line))
          }
          f["" + d] ? h = !0 : f["" + d] = !0,
          u.push(o)
        }
        e && u.splice(0, e);
        var v = {
          name: t.name,
          message: t.message,
          url: r(),
          stack: u
        };
        return m(v, t.sourceURL || t.fileName, t.line || t.lineNumber, t.message || t.description),
        v
      }
      function b(t, e) {
        var n = null;
        e = null == e ? 0 : +e;
        try {
          if (n = _(t)) return n
        } catch(t) {
          if (l.debug) throw t
        }
        try {
          if (n = d(t)) return n
        } catch(t) {
          if (l.debug) throw t
        }
        try {
          if (n = v(t)) return n
        } catch(t) {
          if (l.debug) throw t
        }
        try {
          if (n = x(t, e + 1)) return n
        } catch(t) {
          if (l.debug) throw t
        }
        return {
          name: t.name,
          message: t.message,
          url: r()
        }
      }
      var w = {};
      return b.augmentStackTraceWithInitialElement = m,
      b.computeStackTraceFromStackProp = d,
      b.guessFunctionName = n,
      b.gatherContext = i,
      b
    } (),
    t.exports = l
  }
});